﻿/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#define _CRT_SECURE_NO_WARNINGS // 关闭MSVC中不安全的标准库函数的警告
#include <stdio.h>
#include <stdlib.h>
#include "phonebook.h"
#ifdef _WIN32
#include <windows.h>
#endif

void set_nonblocking_mode(); // 设置非阻塞模式

void print_menu() {
	printf("+------- 通讯录 --------+\n");
	printf("| %-3d | %-4s \t|\n", 1, "添加联系人");
	printf("| %-3d | %-4s \t|\n", 2, "搜索联系人");
	printf("| %-3d | %-4s \t|\n", 3, "全部联系人");
	printf("| %-3d | %-4s \t|\n", 4, "退出程序");
	printf("+-----------------------+\n");
}

// 清理控制台
void clear_screen() {
#ifdef _WIN32
	system("cls");
#else
	system("clear");
#endif
}

int main() {
#ifdef _WIN32
	SetConsoleOutputCP(CP_UTF8);
#endif
	int       choice;
	PhoneBook phoneBook;
	initializePhoneBook(&phoneBook);
	do {
		clear_screen();
		print_menu();
		printf("请选择: ");
		scanf("%2d", &choice); // 读取并忽略多余的字符
		switch (choice) {
			case 1:
				addContact(&phoneBook);
				getchar(); // 等待用户按下回车或任意键
				break;
			case 2:
				searchContact(&phoneBook);
				getchar();
				break;
			case 3:
				displayContacts(&phoneBook);
				getchar(); // 为了处理多余的回车符
				getchar();
				break;
			case 4:
				printf("⛔ 退出通讯录. 再见!\n");
				break;
			default:
				printf("⛔ 请重新选择.\n");
		}
	} while (choice != 4);
	return 0;
}
